Suljettu. Tämä kysymys tarvitsee yksityiskohtia tai selkeyttä. Se ei tällä hetkellä hyväksy vastauksia. Haluatko parantaa tätä kysymystä? Lisää tietoja ja selvitä ongelma muokkaamalla tätä viestiä. Suljettu 1 vuosi sitten. Paranna tätä kysymystä Teen koodihaastetta ja haluan saada matriisistani kolme ensimmäistä arvoa määrittämällä aloitusindeksin ja saamalla lähtöindeksistä vain ensimmäiset (3 tai voi olla minkä tahansa pituisia) arvoja. Yritin tätä koodia ja se toimii, mutta koodirakenne on liian pitkä, joten miten voin tehdä siitä lyhyemmän, jotta se voi olla helppo ymmärtää. int n = 10; kaksinkertainen allekirjoitus = uusi kaksois [] {1, 1, 1}; kaksinkertainen [] ret = uusi kaksinkertainen [n]; kaksinkertainen summa = 0; ret [0] = allekirjoitus [0]; ret [1] = allekirjoitus [1]; ret [2] = allekirjoitus [2]; int x, i; for (i = 0; i
2021-01-31 08:20:31
LINQ: n avulla voit kokeilla jotain tällaista: var-arvot = taulukko. Ohita (hakemisto) Ota (n) .ToArray (); Missä hakemisto on ensimmäisen kohteen hakemisto ja n niiden kohteiden lukumäärä, jotka haluat valita. Esim. https://dotnetfiddle.net/Pk1rwY Sivuhuomautuksena. LINQ: n käyttö ei tarkoita, että koodisi olisi nopeampi. Se olisi kompaktimpi / luettavampi jne. Jotta voit arvioida koodisi suorituskykyä, sinun on käytettävä jotain BenchmarkDotNet-tyyppistä. | Ei Linq-ratkaisua: yksityinen staattinen T [] Pura(T [] lähde, int fromIndex, int pituus) { jos (null == lähde) heittää uusi ArgumentNullException (nimi (lähde)); muu jos (fromIndex <0) heittää uusi ArgumentOutOfRangeException (nameof (fromIndex), "From Index ei saa olla negatiivinen"); muu jos (pituus <0) heittää uusi ArgumentOutOfRangeException (nameof (pituus), "Pituuden ei saa olla negatiivinen"); if (fromIndex> = lähde.Pituus || pituus == 0) palauta uusi T [0]; T [] tulos = uusi T [Math.Min (pituus, lähde.Pituus - fromIndex)]; Array.Copy (lähde, fromIndex, tulos, 0, result.Length); paluutulos; } Sitten kaksois [] allekirjoitus = uusi kaksois [] {0, 1, 2, 3, 4, 5}; double [] ret = Pura (allekirjoitus, 3, 2); Console.Write (merkkijonoJoin (",", ret)); Tulokset: 3, 4 | Kysymyksestänne on hyödynnettävä operaattoreita .Take ja .Skip. var result = matriisi.Skip (alkaaIndex) .Take (numberOfElements) Koodisi perusteella näyttää siltä, että yrität tehdä jotain hieman erilaista, nimittäin summaavat elementit. .Sum-operaattorista voi olla apua tässä. | Eikö vastausta etsit? Selaa muita kysymyksiä, jotka on merkitty koodilla c # arrays linq, tai kysy oma kysymyksesi.